package com.cw.DesignModel23.Behavioral.ObserverPattern;

/**
 * JDK 中提供了观察者模式的支持 ;
 *
 * 被观察者 : 被观察者 继承 Observable 类 ;
 * 观察者 : 观察者 实现 Observer 接口 ;
 * 关联 观察者 与 被观察者 : 调用 被观察者 的 addObserver 方法 , 关联二者 ;
 * 触发通知 : 被观察者 数据改变时 , 调用 setChanged 和 notifyObservers 方法 , 会自动回调 观察者的 update 方法 ;
 * 用户在游戏中提出问题 , 管理员负责监听并处理问题 ;
 * ————————————————
 * 版权声明：本文为CSDN博主「韩曙亮」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
 * 原文链接：https://blog.csdn.net/shulianghan/article/details/119748365
 */

public class Main {
    public static void main(String[] args) {
        // 创建被观察者
        Game game = new Game("Cat And Mouse");
        // 创建观察者
        Manager manager = new Manager("Tom");

        // 关联 观察者 与 被观察者
        game.addObserver(manager);

        // 业务逻辑 : 用户提出问题到游戏中 , 管理员接收到通知消息
        Question question = new Question();
        question.setUserName("Jerry");
        question.setContent("游戏崩溃");

        // 在游戏中提交问题
        game.produceQuestion(game, question);
    }
}

